package com.epoint.bizlogic.clubInfo;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import java.util.stream.Collectors;

import com.epoint.bizlogic.clubInfo.domain.ClubInfo;
import com.epoint.bizlogic.clubInfo.domain.ClubInfoVo;
import com.epoint.dao.ClubInfoDao;

import cn.hutool.core.util.StrUtil;

public class ClubInfoService
{

    ClubInfoDao clubInfoDao = new ClubInfoDao();
    
    /**
     * 分页模糊查询信息
     * @param pageIndex 页号
     * @param pageSize 页数
     * @param clubName 俱乐部名称
     * @param clubType 类型
     * @return
     */
    public List<ClubInfoVo> queryClubInfo(Integer pageIndex, Integer pageSize, String clubName, String clubType) {
        
        List<ClubInfoVo> dataList = clubInfoDao.queryClubInfo(pageIndex, pageSize, clubName, clubType);
        
        Map<String, List<ClubInfoVo>> collect = dataList.stream().collect(Collectors.groupingBy(ClubInfoVo::getClubId));
        
        List<ClubInfoVo> reslutList = new ArrayList<>();
        for(Map.Entry<String, List<ClubInfoVo>> map : collect.entrySet()) {
            String clubId = map.getKey();
            List<ClubInfoVo> valueList = map.getValue();
            int size = valueList.size();
            ClubInfoVo clubInfoVo = valueList.get(0);
            
            // 如果只有一条数据，且无id号，说明没有举办活动
            if (size == 1 && StrUtil.isBlankIfStr(clubInfoVo.getActivityId())) {
                clubInfoVo.setActivityNum(0);
                reslutList.add(clubInfoVo);
                continue;
            }
            // 如果只有一条数据，且有id号，说明仅仅举办一次活动
            if (size == 1 && !StrUtil.isBlankIfStr(clubInfoVo.getActivityId())) {
                clubInfoVo.setActivityNum(1);
                reslutList.add(clubInfoVo);
                continue;
            }
            // 多条数据，直接统计条数
            clubInfoVo.setActivityNum(size);
            reslutList.add(clubInfoVo);
        }
        
        return reslutList;
    }
    
    
    /**
     * 新增俱乐部信息
     * @param clubInfo 信息
     * @return 条数
     * 
     */
    public int addClubInfo(ClubInfo clubInfo) {
        clubInfo.setClubId(UUID.randomUUID().toString());
        return clubInfoDao.addClubInfo(clubInfo);
    }
    
    
    /**
     * 根据id查询俱乐部信息
     * @param clubId id
     * @return 结果
     */
    public ClubInfo queryClubInfoById(String clubId) {
        return clubInfoDao.queryClubInfoById(clubId);
    }
    
    /**
         * 更新俱乐部信息
     * @param clubInfo 俱乐部信息
     * @return 结果
     */
    public int updateClubInfo(ClubInfo clubInfo) {
        return clubInfoDao.updateClubInfo(clubInfo);
    }


    /**
     * 获取全部俱乐部信息
     * @return
     */
    public List<ClubInfoVo> queryAllClubInfo() {
        return clubInfoDao.queryAllClubInfo();
    }


    /**
     * 级联删除俱乐部信息
     * @param clubIds id
     * @return
     */
    public int deleteClubinfo(String clubIds) {
        return clubInfoDao.deleteClubinfo(clubIds);
    }
}
